package com.sky.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
@Slf4j
public class RedisConfiguration {

    /**
     * 创建并配置一个RedisTemplate Bean。
     *
     * 该函数用于创建一个RedisTemplate实例，并配置其连接工厂和键的序列化器。
     * RedisTemplate是Spring Data Redis提供的一个核心类，用于与Redis进行交互。
     *
     * @param redisConnectionFactory Redis连接工厂，用于创建与Redis服务器的连接。
     * @return 配置好的RedisTemplate实例，可用于执行Redis操作。
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis模板对象...");
        RedisTemplate redisTemplate = new RedisTemplate();

        // 配置RedisTemplate的连接工厂
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        // StringRedisSerializer String类型的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());

        return redisTemplate;
    }
}